package com.example.temp;

public class Test6oooo {

    public static void main(String[] args) {

        System.out.println(3 >> 1);
    }

    /**
     * 把一个数组最开始的若干个元素搬到数组的末尾，我们称之为数组的旋转。
     * 输入一个非递减排序的数组的一个旋转，输出旋转数组的最小元素。
     * 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转，该数组的最小值为1。
     * NOTE：给出的所有元素都大于0，若数组大小为0，请返回0。
     * <p>
     * 题意：给一个数组{1,2,3,4,5}是非递减排序的 1 0 1 1 1，2 2 2 2 2也都是非递减排序
     * 所以直接输出最小值，浪费了非递减排序这个条件，效率低
     */

    public class Solution {
        public int minNumberInRotateArray(int[] array) {
            if (array.length == 0) return 0;
//            int min = array[0];
//            for (int i = 1; i < array.length; i++) {
//                min = Math.min(min,array[i]);
//            }
//            return min;
            int l = 0;
            int r = array.length - 1;
            while (l < r-1) {
                int mid = (l + r) >> 1;
                if (array[mid]>=array[l]){//在右边子数组
                    l =mid;
                }else if (array[mid]<=array[r]){//在左边子数组
                    r = mid;
                }
            }
            return array[r];//不能用l

        }
    }
}
